import Vue from 'vue'
import Router from 'vue-router'
import * as dd from 'dingtalk-jsapi'
import { constantRouterMap } from './router.config.js'

// hack router push callback
const originalPush = Router.prototype.push
Router.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  return originalPush.call(this, location).catch(err => err)
}

Vue.use(Router)

const createRouter = () =>
  new Router({
    mode: 'history', // 如果你是 history模式 需要配置vue.config.js publicPath
    // base: process.env.BASE_URL,
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRouterMap
  })

const router = createRouter()
const isDD = dd && dd.env.platform !== 'notInDingTalk'
router.beforeEach((to, from, next) => {
  if (isDD && !to.query.dd_nav_bgcolor) {
    const query = to.query
    query.dd_nav_bgcolor = 'FF292E3A' // 钉钉设置导航栏颜色
    query.showmenu = false
    next({
      path: to.path,
      query: query
    })
  } else {
    next()
  }
})
router.afterEach((to, from) => {
  if (isDD) {
    dd.ready(() => {
      dd.biz.navigation.setTitle({
        title: to.meta.title
      })
    })
  }
})
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
